package com.bestcem.xm.award.service;


import com.bestcem.xm.award.grpc.service.param.redpacket.WinDetailListParam;
import com.bestcem.xm.award.service.dto.*;
import com.bestcem.xm.common.core.domain.web.ServiceResult;

import java.util.List;

/**
 * @author xa.zhang <xa.zhang@idiaoyan.com>
 * @version v1.0
 * @date 2021/6/30 13:40
 * @desc 微信红包相关，以及红包列表查看统计
 */
public interface RedPacketDisplayService {

    /**
     * 查看红包详情页面中的 获取红包总览
     *
     * @param awardId 奖励id
     * @return 红包总览
     */
    ServiceResult<RedPacketStatsDTO> getRedPacketStats(String awardId);


    /**
     * 查看红包详情页面中的 获取投放数据统计
     *
     * @param awardId 奖励id
     * @return 投放数据统计
     */
    ServiceResult<List<DeliverDetailDTO>> getDeliverDetail(String awardId);


    /**
     * 查看红包详情页面中的中奖名单 投放名称列表获取
     *
     * @param awardId 奖励id
     * @return 投放名称列表
     */
    ServiceResult<List<String>> getDeliverNameList(String awardId);

    /**
     * 查看红包详情页面中的中奖名单 获取中奖人数
     *
     * @param awardId 奖励id
     * @return 中奖人数
     */
    ServiceResult<Integer> getWinCount(String awardId);

    /**
     * 查看红包详情页面中的中奖名单 中奖名单列表
     *
     * @param request 请求参数
     * @return 中奖名单列表
     */
    ServiceResult<WinDetailDTO> getWinDetailList(WinDetailListParam request);


    /**
     * 查看红包详情页面中的中奖名单 中奖名单列表
     *
     * @param request 请求参数
     * @return oss url信息
     */
    ServiceResult<FileInfoDTO> exportWinDetailList(WinDetailListParam request);

    /**
     * 红包领取前置校验，是否可领取红包
     *
     * @param awardId 奖励id
     * @param code    用户授权code
     * @param requestId 请求id
     * @return 返回requestId等信息
     */
    ServiceResult<RedPacketEntryDTO> getRedPacketDraw(String awardId, String code, String requestId);

    /**
     * 领取红包
     *
     * @param requestId request表的id
     * @param awardId   award表的id
     * @return 红包金额
     */
    ServiceResult<Integer> drawRedPacket(String requestId, String awardId);


}
